const signUpModel = require("../models/signUpModel")
// jwt--token操作
const jwt = require('jsonwebtoken');
// 引入dayjs
const dayjs = require('dayjs');

// 报名列表
exports.list = async (req, res) => {
    let { page, pageSize, userName, activeName } = req.query
    if (!page && !pageSize) {
        res.status(400).json({
            code: 400,
            msg: "缺少必要的参数"
        })
    }
    try {
        let results = await signUpModel.list(Number(page), Number(pageSize), userName, activeName)
        // console.log("控制器：：：：：", results)
        res.json({ code: 0, msg: "活动列表请求成功！", results: results })
    } catch (error) {
        console.log(error)
        res.json({ code: -1, msg: "活动列表请求失败！", error })
    }
}

// 撤销报名
exports.revoke = async (req, res) => {
    let { id } = req.query
    if (!id) {
        res.status(400).json({
            code: 400,
            msg: "缺少必要的参数"
        })
    }
    try {
        let results = await signUpModel.revoke(Number(id))
        // 判断更新结果
        if (!results || results.affectedRows === 0) { // 根据ORM具体返回值判断
            return res.status(400).json({
                code: 400,
                msg: "撤销报名失败：活动不存在或数据未变化",
            });
        }
        // console.log("控制器：：：：：", results)
        res.json({ code: 0, msg: "撤销报名请求成功！", results: results })
    } catch (error) {
        console.log(error)
        res.status(500).json({ code: -1, msg: "撤销报名请求失败！", error })
    }
}


// 添加报名记录---报名流程
exports.add = async (req, res) => {
    let { active_id, user_id } = req.body
    if (!active_id && !user_id) {
        res.status(400).json({
            code: 400,
            msg: "缺少必要的参数"
        })
    }
    try {
        // 1. 先检查这个活动是否存在，以及用户是否已经报名过了
        const checkResult = await signUpModel.check(active_id, user_id)
        console.log('checkResult::::',checkResult)
        if (!checkResult || checkResult.length === 0) { // 说明用户先前未报名
            // 2. 用户先前未报名，就执行添加操作
            const addResult = await signUpModel.add(active_id, user_id)
            // 判断更新结果
            if (!addResult || addResult.affectedRows === 0) { // 根据ORM具体返回值判断
                return res.status(500).json({
                    code: 500,
                    msg: "报名失败：数据未变化",
                });
            }
            res.json({ code: 0, msg: "报名请求成功！", addResult: addResult })
        } else {
            return res.status(400).json({
                code: 400,
                msg: "报名失败：活动不存在或你已报名",
            });
        }
    } catch (error) {
        console.log(error)
        res.json({ code: -1, msg: "报名接口请求失败！", error })
    }
}

// 获取报名记录
exports.get = async (req,res) => {
    let { id } = req.query
    if (!id) {
        res.status(400).json({
            code: 400,
            msg: "缺少必要的参数"
        })
    }
    try {
        let results = await signUpModel.get(Number(id))
        // 判断更新结果
        if (!results || results.affectedRows === 0) { // 根据ORM具体返回值判断
            return res.status(400).json({
                code: 400,
                msg: "获取失败：活动不存在或数据未变化",
            });
        }
        // console.log("控制器：：：：：", results)
        res.json({ code: 0, msg: "报名记录请求成功！", results: results })
    } catch (error) {
        console.log(error)
        res.status(500).json({ code: -1, msg: "报名记录请求失败！", error })
    }
}

// 删除报名
exports.delete = async (req,res) => {
    let {id} = req.body
    if (!id) {
        res.status(400).json({
            code: 400,
            msg: "缺少必要的参数"
        })
    }
    try {
        let results = await signUpModel.delete(Number(id))
        // 判断更新结果
        if (!results || results.affectedRows === 0) { // 根据ORM具体返回值判断
            return res.status(400).json({
                code: 400,
                msg: "删除失败：活动不存在或数据未变化",
            });
        }
        // console.log("控制器：：：：：", results)
        res.json({ code: 0, msg: "删除记录请求成功！", results: results })
    } catch (error) {
        console.log(error)
        res.status(500).json({ code: -1, msg: "删除记录请求失败！", error })
    }
}